<?php
// 用户操作类
class user extends Sql {

    // 用户登录
    public function user_09241($username, $password, $time = 3600*2)
    {
        // 检测用户
        $result = $this->query('user',array('username','password'),array($username,$password));
        // 写入token
        if ($result) {
            // 获取到用户ID
            $user_data = $this->getdata('user',array('username','password'),array($username,$password));
            // 写入token
            $token = $this->user_09242($user_data['id'],$user_data['level'],$time);
        }
        
        return $result?$token:false;
    }

    // 写token
    public function user_09242($id, $level, $time = 3600)
    {
        // 删除旧令牌
        $this->delete('token',array('id','level'),array($id,$level));
        // 生成token
        $token = md5($id.$level.intval(time()));
        // 写入新令牌
        $result = $this->create('token',array('id','token','time','end','level'),array($id,$token,intval(time()),intval(time())+$time,$level));

        return $result?$token:false;
    }

    // 发送邮件
    public function user_09243($addressee = "domycat@yeah.net", $id = 100000, $body = null)
    {
        // 验证码生成和检测
        $code = rand(100000,999999);
        $result = $this->user_09244($addressee,$code,false); // 检测验证码，但不使用
        if (!$result) {
            // 写一条验证码
            $this->create('code',array('code','id','email','time','end','type'),array($code,$id,$addressee,intval(time()),intval(time())+3600,1));
            // 配置
            $config = array(
                // 邮件
                'Host' => 'smtp.qq.com',
                'Username' => '42964179@qq.com',
                'Password' => 'kklfiosfxriibibb',
                'title' => 'JING',
                'body' => $body?$bode:'验证码：'.$code.'，该验证码10分钟内有效。为了保障您的账户安全，请勿向他人泄漏验证码信息。',
                'addAddress' => $addressee, // 收件人
            );

            require('./app/modules/email/mail.php');
            
        } else {
            // 检测到之前有过验证码了，那就删除再来
            $this->delete('code',array('email','code'),array($addressee,$code));
            $this->user_09243($addressee,$id,$body);
        }
        
    }

    // 检测验证码 顺便决定用不用？默认用掉
    public function user_09244($addressee, $code, $use = true)
    {
        // 检测是否存在
        $result = $this->query('code',array('email','code'),array($addressee,$code));
        // 存在
        if ($result) {
            // 获取验证码数据
            $result = $this->getdata('code',array('email','code'),array($addressee,$code));
            // 检测是否过期
            if ($result['end'] >= intval(time()) and $result['type'] == 1) {
                // 使用
                if ($use) {
                    $this->updata('code',array('email','code'),array($addressee,$code),array('type'),array(0));
                }
                // 没过期
                $result = true;
            } else {
                 // 过期了 删除验证码
                 $result = false;
                 $this->delete('code',array('email','code'),array($addressee,$code));
            }
        }

        return $result;
    }

    // 注册
    public function user_09245($username, $password, $email, $code)
    {
        // 生成一条ID
        $id = rand(200000,999999);
        // 账号
        $result1 = $this->query('user',array('username'),array($username));
        // 邮箱
        $result2 = $this->query('user',array('email'),array($email));
        // ID
        $result3 = $this->query('user',array('id'),array($id));
        // 可以注册
        if ($result1 == false and $result2 == false) {
            if ($result3 == false) {
                // 检测code 并使用
                $code = $this->user_09244($email,$code);
                if ($code) {
                    // 写一条用户数据
                    $this->create(
                        'user',
                        array('username','password','email','id','level','pay_password','reg_time','ip'),
                        array($username,$password,$email,$id,10,123456,date('Y-m-d H:i:s'),$_SERVER['REMOTE_ADDR'])
                    );
                    $type = true;
                }
            } else {
                // 重新载入
                $this->user_09245($username,$password,$email,$code);
                exit();
            }
        }

        return $type;
    }

}